package com.itheima.arithmetic.array;

import java.util.Arrays;

public class ArraySort {


    public static void main(String[] args) {
        //System.out.println(removeDuplicates(new int[]{0, 1, 2, 2, 3, 3, 4}));
        System.out.println(pivotIndex(new int[]{1, 7, 8, 6, 2, 2, 5, 6, 9}));
    }


    /**
     * 一个有序数组 nums, 原地删除重复出现的元素, 是每个元素只出现一次
     * 返回删除后新数组的长度
     * 要求: 不能使用额外的数组空间, 必须在原地修改输入的数组并在O(1)下完成
     * 例如: 输入: [0,1,2,2,3,3,4]
     *      输出: 5
     * 双指针算法
     */
    private static int removeDuplicates(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        int i = 0;
        for (int j = 1; j < nums.length; j++) {
            if (nums[i] != nums[j]) {
                i++; // i指针后移
                nums[i] = nums[j]; // nums[i]的值就是原来nums[j]
            }
        }
        return i + 1;
    }


    /**
     * 给点一个数组, 返回一个【中心下标】
     * 要求左边元素相加的和等于右边元素的和, 不存在返回-1
     */
    private static int pivotIndex(int [] nums){
        int sum = Arrays.stream(nums).sum();
        int total = 0;
        for (int i = 0; i < nums.length; i++) {
            total += nums[i];
            if (sum == total) {
                return i;
            }
            sum -= nums[i];
        }
        return -1;
    }

}
